﻿Public Class NewDetail
    Inherits CoreClass

    ' Gan gia tri cho bien MenuID de kiem tra quyen cua ng dung, gia tri nay lay trog DB va dc fix
    Dim chkMenu As Integer = getIDMenu(14)

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Try
            ' Set sự kiện submit cho nút chỉ định
            Page.Form.DefaultButton = btaAddNew.UniqueID
            chkPms((CInt(Session("GroupId").ToString())), chkMenu)
            If Not Page.IsPostBack Then
                If chkView = 1 Then
                    loadCat()
                    getNew()
                Else
                    objAlert.ErrorBox(Page, "Bạn không có quyền truy xuất trang này, liên hệ với Admin để biết thêm chi tiết.")
                End If
            End If
            formatCbx()
        Catch ex As Exception
            Response.Redirect("/Inside/xLogin.aspx?redirect=" & Request.Url.PathAndQuery.Replace("?", "|"))
        End Try
    End Sub


#Region "Các hàm tự viết"

    ' Lấy dữ liệu vào ComboBox Category
    Private Sub loadCat()
        Try
            Dim lst As New List(Of ListItem)
            sql = "spi_CatGetList '1'"
            objData.ExeReader(sql)
            Do While objData.dataRead.Read
                lst.Add(New ListItem(objData.dataRead("CatPageName").ToString(), 0))
                sql = "spi_getSubCat " & objFunction.ValueCheck(objData.dataRead("CatID").ToString())
                objDataRead.ExeReader(sql)
                Do While objDataRead.dataRead.Read
                    lst.Add(New ListItem(" ---- " & objDataRead.dataRead("SubCatPageName").ToString(), objDataRead.dataRead("SubCatID").ToString()))
                Loop
            Loop
            ' Đưa toàn bộ aray menu vào drop down list
            cbxMenu.Items.AddRange(lst.ToArray)

            ' Fill dât vào combobox Status
            cbxStt.Items.Insert(0, New ListItem("-- Chờ duyệt --", "0"))
            cbxStt.Items.Insert(1, New ListItem("-- Đã duyệt --", "1"))
            cbxStt.Items.Insert(2, New ListItem("-- Xóa tạm thời --", "2"))
        Catch ex As Exception
            If objConfig.Developer.Equals("1") Then
                objAlert.ErrorBox(Page, "File: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.DeclaringType.Name & _
                                  " --- Function: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.Name & _
                                  " --- Mess: " & ex.Message.Replace("'", """"))
            Else
                objAlert.ErrorBox(Page, "Lỗi kỹ thuật, hãy thông báo lại với Admin, xin cảm ơn.")
            End If
        End Try
    End Sub

    ' Format màu sắc cho các Drop Down List
    Private Sub formatCbx()
        Try
            ' Định dạng màu sắc cho menu cha
            For i As Integer = 0 To cbxMenu.Items.Count - 1
                If cbxMenu.Items(i).Value = 0 Then
                    cbxMenu.Items(i).Attributes.Add("style", "color:red;background-color:LightGray;")
                End If
            Next

            ' format cho combo box STATUS
            cbxStt.Items(0).Attributes.Add("style", "color:red;background-color:White;")
            cbxStt.Items(1).Attributes.Add("style", "color:green;background-color:White;")
            cbxStt.Items(2).Attributes.Add("style", "color:White;background-color:red;")
        Catch ex As Exception

        End Try
    End Sub

    ' Kiểm tra dữ liệu nhập trên Form
    Public Function chkField() As Boolean
        Dim flag = True

        If txtTitle.Text = "" Then
            flag = False
            objAlert.ErrorBox(Page, "Hãy nhập giá trị cho mục Tiêu đề tin.")
            Return flag
        End If
        If cbxMenu.SelectedValue = "" Or cbxMenu.SelectedValue = "0" Then
            flag = False
            objAlert.ErrorBox(Page, "Hãy chọn Danh Mục Tin cho đúng.")
            Return flag
        End If
        If txtDesc.Text = "" Then
            flag = False
            objAlert.ErrorBox(Page, "Hãy nhập nội dung phần Giới Thiệu Tin.")
            Return flag
        End If
        If FCKeditor1.Value = "" Then
            flag = False
            objAlert.ErrorBox(Page, "Hãy nhập nội dung Chi Tiết Tin.")
            Return flag
        End If
        Return flag
    End Function

    ' Get dữ liệu của New fill vào form
    Private Sub getNew()
        Try
            Dim id As Integer = 0
            id = Integer.Parse(Request.QueryString("id"))
            If id <= 0 Then
                objAlert.ErrorBox(Page, "Tin bài này không tồn tại trong hệ thống, hãy kiểm tra lại.")
                Exit Sub
            End If
            sql = "spi_NewGetByID " & objFunction.ValueCheck(id)
            objData.ExeReader(sql)
            If objData.dataRead.Read Then
                txtTitle.Text = objData.dataRead("NewTitle").ToString()
                txtDesc.Text = objData.dataRead("NewDesc").ToString()
                cbxMenu.SelectedValue = objData.dataRead("SubCatID").ToString()
                Dim d1 As Date = Date.Parse(objData.dataRead("NewDate").ToString())
                Dim strSaveFolder As String = "/EditorData/image" & Format(d1, "/yyyy/MM/dd/")
                ProImage.ImageUrl = strSaveFolder & objData.dataRead("NewImage2").ToString()
                cbxStt.SelectedValue = objData.dataRead("NewStt").ToString()
                FCKeditor1.Value = objData.dataRead("NewDetail").ToString()
                lblProDate.Text = objData.dataRead("NewDate").ToString()
                lblImg1.Text = objData.dataRead("NewImage").ToString()
                lblImg2.Text = objData.dataRead("NewImage2").ToString()
                lblImg3.Text = objData.dataRead("NewImage3").ToString()
            End If
        Catch ex As Exception
            If objConfig.Developer.Equals("1") Then
                objAlert.ErrorBox(Page, "File: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.DeclaringType.Name & _
                                  " --- Function: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.Name & _
                                  " --- Mess: " & ex.Message.Replace("'", """"))
            Else
                objAlert.ErrorBox(Page, "Lỗi kỹ thuật, hãy thông báo lại với Admin, xin cảm ơn.")
            End If
        End Try
    End Sub

#End Region

    Private Sub btnBack_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBack.Click
        Response.Redirect("NewManager.aspx")
    End Sub

    Private Sub btaAddNew_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btaAddNew.Click
        If Not chkUpdate = 1 Then
            objAlert.ErrorBox(Page, "Bạn không có quyền sử dụng tính năng này. <br><br>Liên hệ với Admin để biết thêm chi tiết.")
            Exit Sub
        End If
        Dim id As Integer = 0
        id = Integer.Parse(Request.QueryString("id"))
        If id <= 0 Then
            objAlert.ErrorBox(Page, "Tin bài này không tồn tại trong hệ thống, hãy kiểm tra lại.")
            Exit Sub
        End If
        ' Goi ham kiem tra Form
        If Not chkField() Then
            Exit Sub
        End If

        Try
            Dim filename As String = lblImg1.Text
            Dim fileThumb As String = lblImg2.Text
            Dim fileThumb2 As String = lblImg3.Text
            ' Nếu có chọn file mới thì mới chạy phần upload và thubnail ảnh
            If avatarImg.HasFile Then
                'SAVE FILE
                Dim proDate As Date = Date.Parse(lblProDate.Text)
                Dim strDateFolder As String = Format(proDate, "\\yyyy\\MM\\dd\\")
                Dim strSaveFolder As String = Server.MapPath("/") & "EditorData\image" & strDateFolder
                'Kiểm tra sự tồn tại của thư mục
                If Not System.IO.Directory.Exists(strSaveFolder) Then
                    'Tạo thư mục
                    Call System.IO.Directory.CreateDirectory(strSaveFolder)
                End If
                filename = objFunction.GetUploadFileName(strSaveFolder, objFunction.UnicodeToPlain(avatarImg.FileName))
                avatarImg.SaveAs(strSaveFolder & filename)
                ' END SAVE FILE

                ' Thumbnail Image
                Dim arr As String() = Split(objConfig.Image3, "|", 2)
                Dim Img3W As Integer = 0
                Dim Img3H As Integer = 0
                Img3W = Integer.Parse(arr(0).ToString())
                Img3H = Integer.Parse(arr(1).ToString())
                Dim tempDimension As Integer = 0
                If Img3W > Img3H Then
                    tempDimension = Img3W
                Else
                    tempDimension = Img3H
                End If
                Dim objThumb As New Thumbnail.Thumbnail
                objThumb.InputFile = strSaveFolder & filename
                objThumb.Scale = True
                objThumb.Width = tempDimension
                objThumb.Height = tempDimension
                objThumb.CropWidth = Img3W
                objThumb.CropHeight = Img3H
                objThumb.CropType = Thumbnail.CropType.MiddleCenter
                fileThumb = objThumb.CreateThumbnail()
                objThumb = Nothing
                ' END Thumbnail Image
            End If

            sql = "spi_NewUpdate "
            sql &= objFunction.ValueCheck(id) & ", " '@NewID int, 0 = INSERT, >0=UPDATE
            sql &= objFunction.ValueCheck(cbxMenu.SelectedValue) & ", "  '@SubCatID int,
            sql &= objFunction.FieldUniCk(txtTitle.Text) & ", " '@NewTitle nvarchar(200),
            sql &= objFunction.FieldUniCk(txtDesc.Text) & ", " '@NewDesc nvarchar(500),
            sql &= objFunction.FieldUniCk(FCKeditor1.Value) & ", " '@NewDetail nvarchar(MAX),
            sql &= objFunction.FieldUniCk(filename) & ", " '@NewImage nvarchar(200),
            sql &= objFunction.FieldUniCk(fileThumb) & ", " '@NewImage2 nvarchar(200),
            sql &= objFunction.FieldUniCk(fileThumb2) & ", " ''@NewImage3 nvarchar(200),
            sql &= objFunction.ValueCheck(cbxStt.SelectedValue) '@NewStt tinyint, 0 = WAIT, 1 = SHOW, 2 = DELETE

            objData.ExeNonQuery(sql)
            'objDataRead.ExeReader(sql)
            objFunction.writeLog(Session("UserId"), 2, "Update tin bài", "Tiêu đề: " & txtTitle.Text, "Trạng thái: " & cbxStt.SelectedItem.Text) '0 = Xóa, 1 = Thêm mới, 2 = Update, 3 = Khác
            objAlert.InfoBox(Page, "Update thành công.", Request.Url.PathAndQuery)
        Catch ex As Exception
            objAlert.ErrorBox(Page, "Có lỗi trong quá trình Update thông tin sản phẩm.")
        End Try
    End Sub

    ' xu ly su kien chuyen sang trang crop
    Private Sub btnCrop_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCrop.Click
        Try
            Dim arr As String() = Split(objConfig.Image3, "|", 2)
            Dim Img2W As Integer = 0
            Dim Img2H As Integer = 0
            Img2W = Integer.Parse(arr(0).ToString())
            Img2H = Integer.Parse(arr(1).ToString())
            Dim id As Integer = 0
            id = Integer.Parse(Request.QueryString("id"))
            Response.Redirect("/Inside/CropImage.aspx?w=" & Img2W & "&h=" & Img2H & "&id=" & id & "&type=1")
        Catch ex As Exception
            If objConfig.Developer.Equals("1") Then
                objAlert.ErrorBox(Page, "File: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.DeclaringType.Name & _
                                  " --- Function: " & (New System.Diagnostics.StackTrace).GetFrame(0).GetMethod.Name & _
                                  " --- Mess: " & ex.Message.Replace("'", """"))
            Else
                objAlert.ErrorBox(Page, "Lỗi kỹ thuật, hãy thông báo lại với Admin, xin cảm ơn.")
            End If
        End Try

    End Sub
End Class